package com.taotao.service.impl;

import java.text.SimpleDateFormat;
import java.util.Date;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import com.taotao.common.pojo.PictureResult;
import com.taotao.common.util.FtpUtil;
import com.taotao.common.util.IDUtils;
import com.taotao.service.PictureService;

@Service
public class PictureServiceImpl implements PictureService {

	@Value("${IMAGE_BASE_URL}")
	private String IMAGE_BASE_URL;//图片访问基础路径
	@Value("${FILI_UPLOAD_PATH}")
	private String FILI_UPLOAD_PATH;//Ftp服务器存放路径
	@Value("${FTP_SERVER_IP}")
	private String FTP_SERVER_IP;//FTP服务器ip
	@Value("${FTP_SERVER_PORT}")
	private Integer FTP_SERVER_PORT;//FTP服务器端口
	@Value("${FTP_SERVER_USERNAME}")
	private String FTP_SERVER_USERNAME;//FTP服务器用户名
	@Value("${FTP_SERVER_PASSWORD}")
	private String FTP_SERVER_PASSWORD;//FTP服务器密码
	
	
	@Override
	public  PictureResult uploadFile(MultipartFile uploadFile) {
		// 上传文件功能实现
		String path = savePrivate(uploadFile);
		//回显(上传结果,图片路径)
		PictureResult result = new PictureResult(0, IMAGE_BASE_URL + path);
		return result;
	}
	
	
	/***
	 * 上传图片至FTP服务器
	 * @param uploadFile
	 * @return
	 */
	private String savePrivate(MultipartFile uploadFile){
		String result = null;
		try{
		//上传文件实现
			//判断文件是否为空
			if(uploadFile.isEmpty())
				return null;
			// 上传文件以日期为单位分开存放，可以提高图片的查询速度
			String filePath = "/" + new SimpleDateFormat("yyyy").format(new Date())
							+ "/" + new SimpleDateFormat("MM").format(new Date())
							+ "/" + new SimpleDateFormat("dd").format(new Date())
							+ "/" ;
			// 取原始文件名
			String originalFilename = uploadFile.getOriginalFilename();
			// 新文件名
			String newFileName = IDUtils.genImageName() + originalFilename.substring(originalFilename.lastIndexOf("."));
			// 转存文件，上传到ftp服务器
			FtpUtil.uploadFile(FTP_SERVER_IP, FTP_SERVER_PORT, FTP_SERVER_USERNAME, FTP_SERVER_PASSWORD,
					FILI_UPLOAD_PATH, filePath, newFileName, uploadFile.getInputStream());
			//访问图片的路径
			result = filePath + newFileName;
		}catch(Exception e){
			e.printStackTrace();
		}
		return result;
	}

}